home *** CD-ROM | disk | FTP | other *** search
/ NASA Climatology Interdisciplinary Data Collection / NASA Climatology Interdisciplinary Data Collection - Disc 4.iso / software / grads / lib / window.gui < prev    next >
Text File  |  1998-04-23  |  11KB  |  237 lines

  1. #  window.gui - last revision: October 12, 1997
  2. #
  3. #  This script demonstrates how to create a separate GUI window.
  4. #
  5. #  Sample widget script for creating a separate window for the
  6. #  NCEP/NCAR Re-analysis CDROM.  Modify the first line ("chdir") 
  7. #  for the location of your CDROM drive.
  8. #
  9. #  How to invoke this script:
  10. #
  11. #  Start one of the more general purpose GUI scripts, say sample.gui,
  12. #  by entering at the command line:
  13. #
  14. #  ga-> gui sample.gui
  15. #
  16. #  The from the "File" menu, select GUI, and enter the name of this
  17. #  script (window,gui). A second window shall pop-up.
  18. #
  19. #  NOTES: 
  20. #
  21. #    1. Do not invoke this as your main GUI as it lacks many
  22. #       vital functions (such as a "QUIT" button).
  23. #
  24. #    2. Do note invoke this script from the "ncep.gui" script
  25. #       as to avoid widget naming conflicts.
  26. #
  27. #  --
  28. #   (c) 1997 by Arlindo da Silva
  29. #
  30. #   Permission is granted to any individual or institution to use,
  31. #   copy, or redistribute this software so long as it is not sold for
  32. #   profit, and provided this notice is retained. 
  33. #
  34. #.........................................................................
  35.  
  36.  
  37. #  Mofify this for the location of your CDROM
  38. #  Win32 Users: Use //d to indicate drive d:
  39. #  ------------------------------------------
  40.    chdir("//d/")    
  41.    
  42. #
  43. #  Create a separate window for this
  44. #  ---------------------------------
  45.    MakeWindow(ncepstuff,"NCEP/NCAR CDROM Window");
  46.  
  47.  
  48. # A "label" is an inactive widget which display some text, 
  49. # e.g., an informative  title. The first argument, "root"
  50. # in this case, is the name you give to the widget so that
  51. # you can refer to it later on
  52. # -------------------------------------------------------
  53.   MakeLabel(nceproot,"NCEP/NCAR Re-analysis CDROM")
  54.  
  55.  
  56. # CDROM specific menu's
  57. # ---------------------
  58.   MakeMenu(cc, "Climate")
  59.       MakeMenuItem(c1, cc, "Z u v T q ...", Open, "open climate/prflcl" )
  60.       MakeMenuItem(c2, cc, "Heat Fluxes", Open, "open climate/heatcl" )
  61.       MakeMenuItem(c3, cc, "Potential Vorticity", Open, "open climate/ipvcl" )
  62.  
  63.   MakeMenu(mm, "Monthly")
  64.       MakeMenuItem(m1, mm, "Z u v T q ...",  Open, "open monthly/prfl" )
  65.       MakeMenuItem(m2, mm, "Potential Vorticity",  Open, "open monthly/ipv" )
  66.  
  67.   MakeMenu(hd, "Z")
  68.       MakeMenuItem(xxx, hd, "  Daily",  NULL, NULL )
  69.       MakeMenuItem(xxx, hd, "_________",  NULL, NULL )
  70.       MakeMenuItem(hd5, hd, "Z  30 hPa", Open, "open daily/z30" )
  71.       MakeMenuItem(hd4, hd, "Z 200 hPa", Open, "open daily/z200" )
  72.       MakeMenuItem(hd3, hd, "Z 500 hPa", Open, "open daily/z500" )
  73.       MakeMenuItem(hd2, hd, "Z 700 hPa", Open, "open daily/z700" )
  74.       MakeMenuItem(hd1, hd, "Z 850 hPa", Open, "open daily/z850" )
  75.  
  76.   MakeMenu(ud, "u")
  77.       MakeMenuItem(xxx, ud, "  Daily",  NULL, NULL )
  78.       MakeMenuItem(xxx, ud, "_________",  NULL, NULL )
  79.       MakeMenuItem(ud5, ud, "U  30 hPa", Open, "open daily/u30" )
  80.       MakeMenuItem(ud4, ud, "U 200 hPa", Open, "open daily/u200" )
  81.       MakeMenuItem(ud3, ud, "U 500 hPa", Open, "open daily/u500" )
  82.       MakeMenuItem(ud2, ud, "U 700 hPa", Open, "open daily/u700" )
  83.       MakeMenuItem(ud1, ud, "U 850 hPa", Open, "open daily/u850" )
  84.  
  85.   MakeMenu(vd, "v")
  86.       MakeMenuItem(xxx, vd, "  Daily",  NULL, NULL )
  87.       MakeMenuItem(xxx, vd, "_________",  NULL, NULL )
  88.       MakeMenuItem(vd5, vd, "V  30 hPa", Open, "open daily/v30" )
  89.       MakeMenuItem(vd4, vd, "V 200 hPa", Open, "open daily/v200" )
  90.       MakeMenuItem(vd3, vd, "V 500 hPa", Open, "open daily/v500" )
  91.       MakeMenuItem(vd2, vd, "V 700 hPa", Open, "open daily/v700" )
  92.       MakeMenuItem(vd1, vd, "V 850 hPa", Open, "open daily/v850" )
  93.  
  94.   MakeMenu(td, "T")
  95.       MakeMenuItem(xxx, td, "  Daily",  NULL, NULL )
  96.       MakeMenuItem(xxx, td, "_________",  NULL, NULL )
  97.       MakeMenuItem(td5, td, "T  30 hPa", Open, "open daily/t30" )
  98.       MakeMenuItem(td4, td, "T 200 hPa", Open, "open daily/t200" )
  99.       MakeMenuItem(td3, td, "T 500 hPa", Open, "open daily/t500" )
  100.       MakeMenuItem(td2, td, "T 700 hPa", Open, "open daily/t700" )
  101.       MakeMenuItem(td1, td, "T 850 hPa", Open, "open daily/t850" )
  102.       MakeMenuItem(td0, td, "T at 2m", Open, "open daily/t2m" )
  103.  
  104.   MakeMenu(qd, "q")
  105.       MakeMenuItem(xxx, qd, "  Daily",  NULL, NULL )
  106.       MakeMenuItem(xxx, qd, "_________",  NULL, NULL )
  107.       MakeMenuItem(qd3, qd, "Q 500 hPa", Open, "open daily/q500" )
  108.       MakeMenuItem(qd2, qd, "Q 700 hPa", Open, "open daily/q700" )
  109.       MakeMenuItem(qd1, qd, "Q 850 hPa", Open, "open daily/q850" )
  110.       MakeMenuItem(qd0, qd, "Q at 2m", Open, "open daily/q2m" )
  111.  
  112.   MakeMenu(sd, "Sfc")
  113.       MakeMenuItem(xxx,  sd, "     Daily",  NULL, NULL )
  114.       MakeMenuItem(xxx,  sd,"__________________",  NULL, NULL )
  115.       MakeMenuItem(sd1,  sd, "Sea Level Pressure",  Open, "open daily/mslp" )
  116.       MakeMenuItem(sd2,  sd, "10 meter u-wind",  Open, "open daily/u10m" )
  117.       MakeMenuItem(sd3,  sd, "10 meter v-wind",  Open, "open daily/v10m" )
  118.       MakeMenuItem(sd4,  sd, "Zonal stress",  Open, "open daily/uflx" )
  119.       MakeMenuItem(sd5,  sd, "Meridional stress", Open, "open daily/vflx" )
  120.       MakeMenuItem(xxx,  sd,"__________________",  NULL, NULL )
  121.       MakeMenuItem(sd6,  sd, "Precipitation",  Open, "open daily/prate" )
  122.       MakeMenuItem(sd7,  sd, "Latent Heat Flux",  Open, "open daily/lhtfl" )
  123.       MakeMenuItem(sd8,  sd, "Sensible Heat Flux",  Open, "open daily/" )
  124.       MakeMenuItem(xxx, sd,"__________________",  NULL, NULL )
  125.       MakeMenuItem(sd9, sd, "Shortwave  [down]",  Open, "open daily/dswrfsfc" )
  126.       MakeMenuItem(sda1, sd, "Longwave  [down]",  Open, "open daily/dlwrfsfc" )
  127.       MakeMenuItem(sda2, sd, "Shortwave [up]",  Open, "open daily/uswrfsfc" )
  128.       MakeMenuItem(sda3, sd, "Longwave  [up]",  Open, "open daily/ulwrfsfc" )
  129.  
  130.   MakeButton( close,  "Close", CloseWindow,  NULL )
  131.  
  132.   MakeMenu(hh, "Help")
  133.       MakeMenuItem(h1, hh, "About this Software", NULL, NULL )
  134.       MakeMenuItem(h2, hh, "About this CDROM", Browse, "read.ams")
  135.       MakeMenuItem(h3, hh, "BAMS Article", Browse, "paper/bamspapr.asc")
  136.  
  137.  
  138. # Once you define buttons and menus you may want to enforce their
  139. # relative position. The very first button is always placed at the
  140. # upper left corner.
  141. # ----------------------------------------------------------------
  142.  
  143.   SetWidgetPos(cc, PLACE_UNDER, nceproot, NO_CARE,     NULL)
  144.   SetWidgetPos(mm, PLACE_UNDER, nceproot, PLACE_RIGHT, cc)
  145.   SetWidgetPos(hd, PLACE_UNDER, nceproot, PLACE_RIGHT, mm)
  146.   SetWidgetPos(ud, PLACE_UNDER, nceproot, PLACE_RIGHT, hd)
  147.   SetWidgetPos(vd, PLACE_UNDER, nceproot, PLACE_RIGHT, ud)
  148.   SetWidgetPos(td, PLACE_UNDER, nceproot, PLACE_RIGHT, vd)
  149.   SetWidgetPos(qd, PLACE_UNDER, nceproot, PLACE_RIGHT, td)
  150.   SetWidgetPos(sd, PLACE_UNDER, nceproot, PLACE_RIGHT, qd)
  151.   SetWidgetPos(close, PLACE_UNDER, nceproot, PLACE_RIGHT, sd)
  152.   SetWidgetPos(hh, PLACE_UNDER, nceproot, PLACE_RIGHT, close)
  153.  
  154. # You can optionally select a font
  155. # --------------------------------
  156.   GetFont(ncepfont,"-*-helvetica-bold-o-normal--14-*-*-*-*-*-*-*" )
  157.   SetWidgetFont(nceproot,ncepfont)
  158.  
  159.  
  160. # In order to make your widgets appear on the screen you *must*
  161. # issue this command.
  162. # -------------------------------------------------------------
  163.   ShowDisplay()
  164.   
  165.  
  166. # After your widgets appear on the screen, you can set the color 
  167. # of your widgets. The following colors are pre-defined:
  168. # white, back, red, green, blue, yellow.
  169. # --------------------------------------------------------------
  170.   GetNamedColor(Blue2,"LightSteelBlue")
  171.   GetNamedColor(grey,"grey")
  172.   SetFgColor(nceproot,red)
  173.   SetBgColor(cc,Blue2)
  174.   SetBgColor(mm,Blue2)
  175.   SetBgColor(hd,Blue2)
  176.   SetBgColor(ud,Blue2)
  177.   SetBgColor(vd,Blue2)
  178.   SetBgColor(td,Blue2)
  179.   SetBgColor(qd,Blue2)
  180.   SetBgColor(sd,Blue2)
  181.   SetBgColor(close,grey)
  182.   SetBgColor(hh,Blue2)
  183.  
  184. # Note: Do not call MainLoop() when you have used MakeWindow()
  185.  
  186. #........................................................................
  187. #
  188. # APPENDIX: Currently available callback functions
  189. #
  190. #     Browse    Opens a text file, such as a help file, on a separate
  191. #               window.
  192. #     Cmd       Executes a generic GrADS command
  193. #     CmdStr    Like Cmd, but the user is prompted for an additional
  194. #               string to be appended to the GrADS command.
  195. #     CmdWin    Invokes a window for GrADS command line interface.
  196. #               User can click on past commands from a list.
  197. #     CmdLine   Invokes the standard GrADS command line interface.
  198. #               When the command line is active the other widgets
  199. #               are not available (may be fixed in the future).
  200. # CloseWindow   Closes the current window (do not use for your primary
  201. #               window or you will get stuck).
  202. #     Display   A generic callback for displaying the current variable
  203. #               (or expression) set with VarSel. The options are:
  204. #                  <<    decrements time and executes display
  205. #                 PLAY   starts animation from current to last time
  206. #                DISPLAY just executes display
  207. #                  >>    increments time and  executes display
  208. #               If the "hold" toggle state is OFF (the default),
  209. #               the screen is cleared before displaying.
  210. #     Edit      Like browse, but the user can edit the file. This simple
  211. #               text editor is integrated with GrADS, providing a very
  212. #               elementary Integrated Development Enviroment (IDE) for
  213. #               GrADS scripts. In particular, the script being edited
  214. #               can be executed by clicking on a button (not
  215. #               implemented yet).
  216. #     FileSel   Pops up a scrollable list and asks the user to selected
  217. #               a file among the currently opened GrADS files (including
  218. #               SDFs). The selected file becomes the default.
  219. #     Load      Pops up a "file finder" widget, and after the user
  220. #               clicks on a file name it executes a GrADS command
  221. #               specified as the last argument. In case of "open" or 
  222. #               "sdfopen" the files becomes the default, and the
  223. #               user is asked to select a variable from this file.
  224. #     Open      Similar to Load, but the file name must be specified.
  225. #     Toggle    Turn internal options ON/OFF. The only internal
  226. #               option currently supported is "hold". This callback is
  227. #               usually used with MakeToggle(), see example above.
  228. #     VarSel    Pops up a scrollable list and asks the user to selected
  229. #               a variable from the default file. The user can also
  230. #               type a generic GrADS expression instead of selecting
  231. #               a single variable.
  232. #     NULL      Does not do anything, used for inactive buttons.
  233. #
  234. #........................................................................
  235.  
  236.  
  237.